package com.cfpamf.ms.insur.pay.facade.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @author zhangnayi
 */
@Data
@ApiModel
public class PreCreateOrderDTO {

    /**
     * 商户系统编号
     */
    @NotNull(message = "商户系统编号不能为空")
    @ApiModelProperty("商户系统编号")
    private String sourceSys;

    /**
     * 产品id
     */
    @ApiModelProperty("产品id")
    private String productId;

    /**
     * 商品名称
     */
    @ApiModelProperty("商品名称")
    @NotNull(message = "商品名称不能为空")
    private String productName;

    /**
     * 商品属性
     */
    @ApiModelProperty("商品属性")
    private String productType;

    /**
     * 下单用户
     */
    @ApiModelProperty("下单用户")
    private String userNo;

    /**
     * 支付类型编码
     */
    @ApiModelProperty("支付类型编码")
    @NotNull(message = "支付类型编码不能为空")
    private String payType;

    /**
     * 支付方式
     */
    @ApiModelProperty("支付方式")
    @NotNull(message = "支付方式编码不能为空")
    private String payMethod;

    /**
     * 商户系统订单号
     */
    @ApiModelProperty("商户系统订单号")
    @NotNull(message = "商户系统订单号不能为空")
    private String sourceOrderId;

    /**
     * 下单时间
     */
    @ApiModelProperty("下单时间")
    @NotNull(message = "下单时间不能为空")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date orderTime;

    /**
     * 订单金额(元)，保留两位小数
     */
    @ApiModelProperty("订单金额(元)，保留两位小数")
    @NotNull(message = "订单金额不能为空")
    @DecimalMin(message = "订单金额不能小于或等于0",value = "0.01")
    private BigDecimal orderAmount;

    /**
     * 公众号id
     */
    @ApiModelProperty("公众号id")
    private String openId;

    /**
     * 下单IP
     */
    @ApiModelProperty("下单IP")
    private String orderIp;

    /**
     * 订单有效期(分钟)
     */
    @ApiModelProperty("订单有效期(分钟)")
    @NotNull(message = "订单有效期不能为空")
    private Integer orderPeriod;

    /**
     * 后端异步回接口
     */
    @ApiModelProperty("后端异步回接口")
    private String notifyUrl;

    /**
     * 前端同步回调页面
     */
    @ApiModelProperty("前端同步回调页面")
    private String returnUrl;
}
